home *** CD-ROM | disk | FTP | other *** search
- .rm 66
- .c;Kermit - A Protocol for Painless Micro and Mini File Transfer
- .s 4
- .c;Brian Nelson
- .c;Computer Services
- .c;University of Toledo
- .c;2801 West Bancroft
- .c;Toledo, Ohio 43606
- .s 3
- Abstract
- .s 1
- This article will describe the Kermit
- file transfer protocol.
- This protocol allows many (if not most) types of computer
- systems to effect, at minimum, error free file transfer with other systems
- and microcomputers over asynchronous lines.
- .s 1
- Introduction
- .s 1
- With the widespread use of personal computers the need for file exchange
- between systems has become of foremost concern among users and managers alike.
- There are many commercial products available which meet this need, some of
- which may offer more advanced functions such as transparent
- record oriented file access. Networks that do this, such as DECnet,
- can be expensive, and if your computer or microcomputer is not on the
- network your needs won't be met. Transfer of files with removable disks
- can work, but generally only when the computers are of the same type, it's
- not very useful when the systems are removed in location. Rarely will
- a larger mini or supermini be able to read a microcomputer's disk.
- .s 1
- A more realistic approach, from both cost and convenience, is to find
- a way to use ordinary telecommunications and/or in-house PBX systems
- to connect computers and microcomputers together. If a local connection
- using a PBX or front end switch is not available, there is always dialup
- access with standard 103/212 modems.
- Data can be transferred with very simple methods, such as TYPING a file
- on one system and capturing it on the other system, but this gives no
- protection from noise and overrun of data. It is not very user friendly
- either. What is really needed is a protocol to accomplish file transfer
- reliably and efficiently.
- .s 1
- The first obvious use of any program or protocol designed to accomplish
- file transfer is to be able to provide the
- ability to support file uploads and downloads from minis and superminis such
- as the VAX and PDP-11 to remote personal computers, such as the PC and Rainbow.
- It should also be widely available for many different micros and mainframes.
- File transfer from micro to micro, as well as from a larger central host,
- should be possible. The command interface should be easy to learn, and
- require no intervention from a central site operator or other user.
- The many implementations of Kermit follow these lines, and all versions
- allow some form of transfer in either direction. More advanced versions,
- such as those found on the PDP-11, DEC10/20 and VAX, offer what is known
- as server operation, which allow the remote (connected) Kermit system to
- completely control the file exchanges from their system.
- Since as of this writing (October 9, 1985)
- there are available over 160 versions of Kermit available for numerous
- micro, mini and mainframe configurations, Kermit addresses this need
- quite well.
- .s 1
- While the primary use of Kermit will likely be to support file transfer
- from microcomputer to mini/supermini and mainframe connections, there
- are many uses for Kermit for connections from mini to mini and so on.
- The author routinely use Kermit
- for transfering software developed for the PRO/350 on a RSTS/E 11/23+ and
- a VAX 11/785, as well as using the PDP and VAX for dialing out to other
- systems around the country (not to mention VAX to PDP directly though
- a front end port selector).
- .s 1
- The Kermit protocol
- .s 1
- The Kermit protocol is designed to operate over normal asynchronous terminal
- lines. All data and commands are transferred with a packet oriented protocol,
- basically consisting of a start of packet character (normally SOH), followed
- by length, control, data and checksum fields.
- Communication is half duplex, in that for every packet sent, the sender
- must wait for either an acknowledgement packet (ACK) or a negative
- acknowledgement packet (NAK). Transmission is in ascii, with no requirements
- for the transmission of eight bit characters or control characters
- other than control-A for marking the start of a packet.
- All 'control' characters imbedded in the data are prefixed to convert them
- to printable characters, the same applying to eight bit characters if
- required by the characteristics of the line. Since there are many
- different implementations of Kermit, the protocol provides a mechanism
- by which the capabilities of two connected Kermits can be negotiated to
- allow for differences in the level of protocol support. Examples of
- protocol features that not all Kermits understand include data
- compression and transfer of file attributes.
- .s 1
- The packet format is
- .s 1
- .lit
-
- +------+-----------+-----------+------+------------+-------+
- | MARK | char(LEN) | char(SEQ) | TYPE | DATA | CHECK |
- +------+-----------+-----------+------+------------+-------+
-
-
- .eli
- where all fields consist of ASCII characters, and the char function converts
- a number in the range 0-94 (10) to a printable ASCII character by adding
- 32 (10). The MARK, LEN, SEQ and TYPE fields are one byte, the DATA field
- is variable in size, and the CHECK field is one to three bytes in size.
- .br
- The MARK (normally control A) signifies the start of a packet. The length
- field tells how long the rest of the packet is. The SEQ field is used to
- insure synchronization used to detect lost or duplicate packets. The SEQ
- number wraps around every 64 packets due to the need to encode it as a
- printable ascii character in the range 32 (10) to 126 (10). The
- TYPE field specifies whether the packet is a DATA or CONTROL packet. The
- DATA section is used for the actual transfer of data or informative messages
- from a Kermit server, this field can be up to 90 characters in length.
- Any character whose low seven bits fall in the range of 0 to 37 (8),
- ie, char and 177 (8) is less than 40 (8), will have the value
- 100 (8) exclusive or'ed (xor'ed) with itself and be prefixed by a shift
- character, '_#'. Other shift
- characters may be use for eight bit characters if the line characteristics
- require such. Data compression may also occur in the data field, this is
- done with yet another shift code and byte count sequence.
- The CHECK field is a checksum, either a one character, two character or
- three character CRC check; the sender computes it and the receiver must
- compute it and compare. A checksum mismatch will result in the receiver
- sending a NAK packet (negative acknowledgment) which directs the sender to
- resend the NAK'ed packet. The packet may be following by
- a terminator (likely an ascii 13). This terminator is NOT part of the
- protocol and is sent only to tell the receiver that a 'line' is present.
- Not all Kermit implementations require this; all Kermits will discard data
- outside of a packet in any event.
- .s 1
- Error detection and recovery is by checksum, as noted, and by packet
- read timeouts. If the packet should be corrupted the checksum will be
- incorrect, the receiver will NAK the packet.
- If an expected packet never arrives within the timeout period, or if the
- received packet is not the expected one (as determined by the SEQ field)
- the packet will also be NAK'ed. There are limits as to how many times
- an expected packet will be NAK'ed without aborting the current operation.
- .s 1
- Packet types
- .s 1
- .lit
- D Data
- Y Acknowledgement (ACK), text may be in DATA field
- N Negative Acknowledgement (NAK)
- S Send initiate (Send-Init)
- R Receive Initiate
- B Break (EOT, end of transmission)
- F File name header
- Z End of file (EOF, end of current file)
- E Error packet, text may be present in DATA field
-
- G Generic SERVER command. The first character in the
- data field will be a command to a server, arguments
- may follow that character.
-
- I Login, user and password follow in data field
- C CWD, change working or default directory.
- L Bye, Logout server
- F Finish, Exit server, but do not log out
- E Erase, delete files on server system
- D Directory query
- U Disk space usage query
- T Type a file onto local kermit
- R Rename file(s) on server system
- K Copy file(s) on server system
- W Who's logged in, as in sho sys, sy/s, dev tt
- M Send a terminal message to a user
- H Help, the server responds with commands it can do
- Q Server status query
- P Program, run a program
- J Journal
- V Variable, alter a Kermit setting
-
- C Execute host command. The host command follows in
- the data field.
-
- .eli
- Note that some of the generic server commands, as well as the C packet,
- may not be feasible for a given environment. For instance, the REMOTE LOGIN
- command, which sends the generic I command to the server, can only be done
- under RSTS/E; the generic U command (disk space) is meaningless under RSX
- unless one wants the free space on the entire volume. No Kermit server will
- abort on receiving a packet it can't execute, it will simply send an error
- packet with an informative message saying it can't process the requested
- function.
- .s 2
- A typical transaction
- .s 1
- An example of a Kermit-11 kermit telling a VMS Kermit-32 server to
- expect a file follows. The Kermit-11 command was SEND JUNK.TST
- .s 1
- .lit
- (0)PDP sends: ^A. S~* @-#Y3~( ,
- (0)VAX sends: ^A, Yp/ @-#Y3~!
- (1)PDP sends: ^A-!FJUNK.TST,-4
- (1)VAX sends: ^A%!Y,\I
- (2)PDP sends: ^A`"D$ set ter/vt100#M#J$ xcc :== ccl cc
- #M#J$ xas :== ccl as#M#J!4S
- (2)VAX sends: ^A%"Y.5!
- (3)PDP sends: ^A%#Z,X"
- (3)VAX sends: ^A%#Y/R9
- (4)PDP sends: ^A%$B!_#
- (4)VAX sends: ^A%$Y+&1
-
- .eli
- In packet zero, the Kermit's exchanged information regarding their
- capabilities. The PDP-11 sent an 'S' packet with the data for its
- maximum packet length, default time out, number of pad characters to
- follow a packet (none, hence the space), use a null for padding, end
- of line terminator (a CR + 32), the prefix character for control characters,
- a 'YES' to say the it can prefix eight bit characters with the default,
- that it would like to use CRC block checks, that it will use a tilde for
- data compression, and the 'CAPAS' mask, which here says that it can process
- attribute packets (discussed later).
- Since the VAX also sends a '3' for the checksum type, they will both switch
- to CRC checks on the following packets.
- In packet 1, the PDP11 sends the filename the VAX should use
- for the file it creates. The VAX then sends the acknowledgement. In packet
- three, the PDP sends the first (and only for this file) packet of data. Note
- that the sequence _#M_#J is a carriage return/line feed sequence with 100 (8)
- xored into each character. The '_#' character informs the other Kermit that it
- must xor the next character with 100 (8). In packet three the PDP11 sends
- an EOF packet, the VAX acks it. In packet four, the PDP sends a break packet
- which tell the VAX that no more files (of a possibly wildcard group) are
- coming and the VAX Kermit acks the break packet.
- Both Kermits now switch to the single character checksum and the
- VMS kermit enters the server idle state.
- .s 1
- More specific information regarding Kermit packets and state transitions can
- be found in the references listed at the end of the article.
- .s 2
- Transmission of file attributes
- .s 1
- One of the optional features of the Kermit protocol is the ATTRIBUTE packet.
- The attribute packets allow a Kermit program to send to a receiving Kermit
- information regarding the file organization, size, cluster/retrieval size,
- protection and so forth. There is even a system dependant attribute packet type
- that can be used to transfer things like the RMS11 IFAB
- (the RMS/FCS attributes).
- Since to date only the author's Kermit implementation, Kermit-11, can process
- attribute packets, the discussion is limited to the PDP-11.
- .s 1
- One of the things that two Kermits exchange
- before any file transfer is an information packet, this packet tells the
- receiving Kermit about itself. The last field in this packet, the CAPAS mask,
- tells Kermit if the other one can process attribute packets. If two Kermit-11's
- are communicating, they will find that each can do so, and the sender of a file
- will then send over attribute packets indicating the need (or lack of)
- for binary transmission, based on the file organization, filetype and protection
- code (for RSTS/E).
- If the sending Kermit-11 is running on RSTS/E, RSX11M/M+ or P/OS
- it will also send a copy of the RMS/FCS attributes so the received file will
- be identical (to FCS and/or RMS) to the copy on the sender's system. Since
- other implementations of Kermit may use this special system attribute packet,
- Kermit-11 always sends an attribute packet telling the receiver what hardware
- and operating system it is running on, and thus will only use such data if
- they are compatible.
- Of course, there will be times when a file may be binary and Kermit-11 can't
- tell so, many Kermit's have a SET FILE BINARY and SET FILE ASCII to allow the
- user to override defaults. Kermit-11 also has a SET FILE AUTO/NOAUTO to disable
- it from trying to determine a file's binary status.
- .s 1
- The PDP-11 Kermit-11 implementation
- .s 1
- The author's version of Kermit-11 is written in Macro-11 and can run on
- RSTS/E, RSX11M, RSX11M Plus, P/OS, RT11 and TSX+.
- This version of Kermit is distinct from the other three PDP-11 Kermits
- available; the Stevens P/OS menu driven Kermit; the University of Toronto
- RT11 pascal Kermit and Bob Denny's P/OS Kermit.
- In Kermit-11, the RSTS and RSX file system
- interface is via RMS11 version 2, while the RT11 interface attempts to
- emulate the RMS11 subsystem. The choice of Macro-11 for the implementation
- language was made for several reasons, one being the availability of the
- assembler on all systems and another being speed and compactness of the
- code.
- .br
- RMS11 was used for RSTS/E and the RSX11M based systems
- to provide a common i/o interface to
- the host file system. Additionally, Bob Denny of Alisa Systems further
- extended the RMS interface to support remote file access over DECNET with
- Kermit, allowing commands such as SEND NODENAME::[BRIAN.FUBAR]FILE.TYPE
- and other remote file accesses over DECNET. RMS11 version 2 also provides a very
- simple and powerful means of doing wildcard searching, file renames and
- file deletion via the $PARSE, $SEARCH, $RENAME and $DELETE
- macros; it also allows the same RMS interface
- code to be used on all systems without
- change.
- Points against RMS basically amount to it's size, RMS is quite
- large even if overlayed. This is helped by using the segmented RMSRES
- available on RSTS/E and RSX11M Plus. The one over negative point is that
- RMS11 version 2 does not function well, if at all, on the older versions
- of PDP-11 operating systems, specifically, one should be using RSTS/E v8
- or later, RSX11M v4.1 or later, and RSX11M Plus version 2.1 or later.
- .s 1
- All versions of Kermit-11
- receive eight bit data assuming no parity is used. Where parity is a must,
- Kermit-11 has to use a prefixing scheme for eight bit binary data.
- Binary files are created as FIXED no carriage control files
- such as used for task images. Note that parity generation is done by software
- in Kermit-11. The P/OS version of Kermit-11 runs under control of DCL.
- The next release
- of Kermit-11, which will be 2.37, will include support for the PRO TMS
- (Telephone Management System) option.
- Each version of Kermit-11 has it's own source file
- to deal with the operating system, for RSX it is K11M41.MAC, for RSTS/E they
- are K11E80.MAC and K1180S.MAC, and for RT11 they are called K11RT*.MAC.
- Apart from these specific files, all other source
- files are shared. The RT11 Kermit-11 can use either the version 5.x XL and
- XC handler for high throughput, or it can use multiple terminal service to do
- all its terminal i/o. This second option allows the use of any
- interface supported,
- including the PDT150 modem port, DL/DLV11's and DZ/DZV11's.
- TSX+ users can connect to CL: for dialing out, the exact means is documented
- in the Kermit-11 users guide.
- .s 1
- Future directions
- .s 1
- With the advent of packet switched networks and satellite communications
- the Kermit protocol will likely be extended to increase efficiency over
- such links. The main problem is the half duplex nature of Kermit, the
- packet acknowledgements can take up to several seconds in transit thus
- drastically reducing the throughput. There are several possibilities under
- discussion and a standard should be appearing shortly.
- .s 2
- Summary
- .s 1
- With the knowledge that
- there are Kermit implementations for most personal computers in use
- it becomes apparent that the Kermit standard is well worth looking in to.
- A list of versions running
- on Digital hardware follows the article.
- .lit
-
-
- Kermit: A File-transfer Protocol for Universities
- Frank da Cruz and Bill Catchings
- BYTE Magazine, June/July 1984
-
- The Kermit Protocol Manual, version 5
- Frank da Cruz April 1984
- Columbia University Center for Computing Activities
-
- Information on obtaining Kermit:
-
- KERMIT Distribution
- Columbia University Center for Computing Activities
- 7th Floor, Watson Laboratory
- 612 West 115th Street
- New York, N.Y. 10025
-
- Kermit is also usually found on the Decus symposia SIG tapes.
- Kermit-11 is available from DECUS as number 11-731
-
- Digital hardware that Kermit is currently available for:
-
- Operating Program
- Machine System Language Contributor
-
- DEC PDP-11 MUMPS-11 MUMPS-1982 Cornell U
- DEC PDP-11 RSTS/E Macro-11 U of Toledo
- DEC PDP-11 RSX-11/M Macro-11 U of Toledo
- DEC PDP-11 RSX-11/M+ Macro-11 U of Toledo
- DEC PDP-11 RT-11 Macro-11 U of Toledo
- DEC PDP-11 RT-11 OMSI Pascal U of Toronto
- DEC PDP-11 TSX+ Macro-11 U of Toledo
- DEC PDP-11 Unix 2xBSD C Columbia U
- DEC PDP-11, ... Unix V7 C Columbia U
- DEC PDP-8 OS8, RTS8 PAL-8 R. Hippe
- DEC Pro-3xx P/OS Bliss, Macro Stevens I.T.
- DEC Pro-3xx P/OS Macro-11 U of Toledo
- DEC Pro-3xx Pro/RT Macro-11 U of Toledo
- DEC Pro-3xx Venix V1 C Columbia U
- DEC Pro-3xx Venix V2 C Columbia U
- DEC Rainbow CPM86 ASM86 Columbia U
- DEC Rainbow MS-DOS MASM Columbia U
- DEC Rainbow QNX 1.x C Merrell-Dow
- DEC VAX Ultrix-32 C Columbia U
- DEC VAX VMS Bliss,Macro Stevens I.T.
- DEC VAX VMS C (VAX-11 C) Columbia U
- DEC VAX VMS Pascal U of Toronto
- DEC VAX, ... Unix 4xBSD C Columbia U
- DEC VT-180 Robin CPM80 Turbo Pascal Jeff Duncan
- DEC VT-180 Robin CPM80 2.2 M80,LASM ACC
- DECmate-II,III CPM80 2.2 M80,LASM ACC
- DECsystem-10 TOPS-10 Bliss, Macro Stevens I.T.
- DECSYSTEM-20 TOPS-20 MACRO-20 Columbia U
-
- .eli
-